Distributed computing systems include multiple distinct services. Each service may be independent of other services, and may be accessed without knowledge of its underlying platform implementation. Each service typically operates on an application server such as a Java virtual machine.
In conventional distributed computing systems, to install a new service on a particular application server, an administrator needs to log in to the machine hosting that application server, and manually install the service thereon using a command line interface. Moreover, the administrator typically needs to personally know what machines are on the distributed system and the capabilities of those machines. This makes installing new services on the distributed computing system time consuming and error prone.
The installation of new services can be complicated by service level agreements (SLAs) that are included in the new services. A service level agreement (SLA) is an agreement between a provider of a service and clients of the service that defines quality of service (QoS) guarantees and obligations of both the clients and of the service. Improper placement of a new service can cause the new service to violate its SLA, or may cause existing services to violate their SLAs. Once an administrator determines that a new service or existing service violates an SLA associated with that service, the administrator typically manually chooses a new machine, and migrates the new or existing service to the new machine. This process may be repeated until no SLAs are violated.